perm filename FILLX.FAI[NEW,LCS] blob sn#166870 filedate 1975-07-01 generic text, type T, neo UTF8
00100		TITLE FILL
00200		ENTRY FILLER,LINES,PLOT,PLOTS
00300		DEFINE FLOAT(N)
00400	   <	TLC N,232000
00500		FADR N,N   >
00600		DEFINE FIXX(N)
00700	  <	JUMPGE	N,.+5
00800		MOVNS	N
00900		FIX 	N,233000    
01000		MOVNS	N
01100		CAIA
01200		FIX	N,233000 >	; TO FIX IT LIKE 'IFIX' DOES.
01300	
01400		KK←2 ↔ L←3 ↔ LE←4 ↔ T←5 ↔ J←1
01500		RL←6 ↔ RJ←7 ↔ B←0 ↔ H←11 ↔ JK←10
01600		HG←12 ↔ D←13 ↔ AL←14 ↔ JJ←15
01700	
01800					;	SUBROUTINE FILLER(Q,M)
01900	FILLER:	0
02000		MOVEM 16,SV16#
02100		HRRZ J,(16)
02200		HRRZM J,SVQ#
02300		HRRZ T,@1(16)
02400		HRRZM T,SVM#		;	KK=NE(1)
02500		HRRZ KK,2(J)
02600		ADDI KK,-1(J)
02700					;	DO 4 K=2,KK
02800		HRRZI L,2(J)
02900					;	IF(NE(K).NE.3)GO TO 11
03000	L4:	ADDI L,3
03100		HRRZ T,(L)
03200	L11:	SETZM (L)
03300		CAIN T,3
03400					;	NE(K)=-1
03500	      	SETOM (L)
03600					;	GO TO 4
03700					; 11	NE(K)=0
03800					; 4	CONTINUE
03900		CAIGE L,(KK)
04000		JRST L4
04100					;	RLFT=10000
04200		MOVE RL,[=10000.0]
04300					;	RT=-10000
04400		MOVN RJ,[=10000.0]
04500					;	B=RT
04600		MOVE B,RJ
04700					;	DO 12 K=1,KK
04800		HRRZI L,-3(J)
04900					;	H=IFIX(Q(K))
05000	L12:	ADDI L,3
05100		MOVE H,(L)
05200		FIXX(H)
05300		FLOAT(H)
05400					;	IF(H.LT.RLFT)RLFT=H
05500		CAMGE H,RL
05600		MOVE RL,H
05700	
05800					;	IF(H.GT.RT)RT=H
05900		CAMLE H,RJ
06000		MOVE RJ,H
06100					;	IF(H.EQ.B)NE(K)=-1
06200		CAMN H,B
06300		SETOM 2(L)
06400					;	B=H
06500		MOVE B,H
06600					;	Q(K)=H
06700		MOVEM H,(L)
06800					; 12    R(K)=IFIX(R(K))
06900		MOVE T,1(L)
07000		FIXX(T)
07100		FLOAT(T)
07200		MOVEM T,1(L)
07300		CAIGE L,-2(KK)
07400		JRST L12
07500					;	NE(KK+1)=-1
07600		SETOM 3(KK)
07700	
07800					;	LRT=RT
07900		FIXX(RJ)
08000		MOVEM RJ,LRT#
08100					;	JA=3
08200		HRRZI T,3
08300		HRRZM T,JA#
08400	
08500	
08600					; 124   LEFT=RLFT
08700	L124:	MOVE LE,RL
08800		FIXX(LE)
08900					; 51    J=LEFT
09000	L51:	MOVE J,LE
09100					; 42    RJ=J+.001
09200	L42:	MOVE RJ,J
09300		FLOAT(RJ)
09400		FADR RJ,[=0.001]
09500					;	JCONT=0
09600		SETZM JCONT#
09700					;	LEFT=J
09800		MOVE LE,J
09900	
10000					;	JJ=-1
10100		SETO JJ,
10200					;	ALT=-10000.
10300		MOVN AL,[=10000.0]
10400					; 200   DO 45 L=2,KK
10500		HRRZ L,SVQ
10600	L45:	ADDI L,3
10700		CAILE L,-2(KK)
10800		JRST L455
10900					;	IF(NE(L).NE.0)GO TO 45
11000		SKIPE 2(L)
11100		JRST L45
11200					;	IF(MISS(L,RJ,Q))GO TO 45
11300		CAML RJ,-3(L)
11400		JRST L201
11500		CAMLE RJ,(L)
11600		JRST L202
11700	L201:	CAMGE RJ,(L)
11800		CAMG RJ,-3(L)
11900		JRST L45
12000					;	H=HGHT(L,RJ,Q,R)
12100	L202:	MOVE H,-2(L)
12200		CAMN H,1(L)
12300		JRST RET
12400		MOVNS H
12500		FADR H,1(L)
12600		MOVE D,-3(L)
12700		MOVNS T,D
12800		FADR T,RJ
12900		FADR D,(L)
13000		FMPR H,T
13100		FDVR H,D
13200		FADR H,-2(L)
13300					;	IF(H.LT.ALT)GO TO 45
13400	RET:	CAMGE H,AL
13500		JRST L45
13600	
13700					;	ALT=H
13800		MOVE AL,H
13900					;	JJ=L
14000		HRRZI JJ,(L)
14100					; 45    CONTINUE
14200		JRST L45
14300					;	IF(JJ)GO TO 43
14400	L455:	JUMPL JJ,L43
14500					;	JCONT=-1
14600		SETOM JCONT
14700					;	LEFT=J
14800		MOVE LE,J
14900					; 46    JA=3
15000	L46:	HRRZI T,3
15100		HRRZM T,JA
15200					;	JORD=-1
15300		SETOM JORD#
15400					; 52    KN=Q(JJ)
15500	L52:	MOVE T,(JJ)
15600		FIXX(T)
15700		MOVEM T,KN#
15800					;	KL=Q(JJ-1)
15900		MOVE T,-3(JJ)
16000		FIXX(T)
16100	
16200		MOVEM T,KL#
16300					;	IF(KN.LT.KL)KN=KL
16400		CAMLE T,KN
16500		MOVEM T,KN
16600					; 50    I=J
16700	L50:	MOVEM J,I#
16800					; 102   RJ=I+.01
16900	L102:	MOVE RJ,I
17000		FLOAT(RJ)
17100		FADR RJ,[=0.1]	;6/11/75 ←←**↑↑ WAS 0.01 -- CHECK TIGHT CASES!!
17200					;	ALT=HGHT(JJ,RJ,Q,R)
17300		MOVE AL,-2(JJ)
17400		CAMN AL,1(JJ)
17500		JRST RET2
17600		MOVNS AL
17700		FADR AL,1(JJ)
17800		MOVE D,-3(JJ)
17900		MOVNS T,D
18000		FADR T,RJ
18100		FADR D,(JJ)
18200		FMPR AL,T
18300		FDVR AL,D
18400		FADR AL,-2(JJ)
18500					;	B=-10000
18600	RET2:	MOVN B,[=10000.0]
18700					;	JK=-1
18800		SETO JK,
18900					;	XALT=ALT+.001
19000		MOVE T,AL
19100		FADR T,[=0.001]
19200		MOVEM T,XALT#
19300	
19400					;	ZALT=ALT
19500		MOVEM AL,ZALT#
19600					; 400   DO 47 L=2,KK
19700		MOVE L,SVQ
19800	L47:	ADDI L,3
19900		CAILE L,-2(KK)
20000		JRST L477
20100				;	IF(L.EQ.JJ.OR.MISS(L,RJ,Q).OR.NE(L).LT.0)GO TO 47
20200		CAME L,JJ
20300		SKIPGE 2(L)
20400		JRST L47
20500		CAML RJ,-3(L)
20600		JRST L475
20700		CAMLE RJ,(L)
20800		JRST L476
20900	L475:	CAMGE RJ,(L)
21000		CAMG RJ,-3(L)
21100		JRST L47
21200					;	H=HGHT(L,RJ,Q,R)
21300	L476:	MOVE H,-2(L)
21400		CAMN H,1(L)
21500		JRST RET3
21600		MOVNS H
21700		FADR H,1(L)
21800		MOVE D,-3(L)
21900		MOVNS T,D
22000		FADR T,RJ
22100		FADR D,(L)
22200		FMPR H,T
22300		FDVR H,D
22400		FADR H,-2(L)
22500					;	IF(H.GT.XALT)GO TO 47
22600	RET3:	CAMG H,XALT
22700	
22800					;	IF(H.LE.B)GO TO 47
22900		CAMG H,B
23000		JRST L47
23100					;	B=H
23200		MOVE B,H
23300					;	JK=L
23400		HRRZI JK,(L)
23500					; 47    CONTINUE
23600		JRST L47
23700					;	IF(JK)GO TO 48
23800	L477:	JUMPL JK,L48
23900					;	300   IF(ZALT-B.GT..001.OR.I.NE.J)GO TO 59
24000		MOVN T,B
24100		FADR T,ZALT
24200		CAMG T,[=0.001]
24300		CAME J,I
24400		JRST L59
24500					;	JX=Q(JK)
24600		MOVE T,(JK)
24700		FIXX(T)
24800					;	IF(JX.GT.KN)GO TO 60
24900		CAMLE T,KN
25000		JRST L60
25100					;	JX=Q(JK-1)
25200		MOVE T,-3(JK)
25300		FIXX(T)
25400					;	IF(JX.LT.KN)GO TO 59
25500		CAMGE T,KN
25600		JRST L59
25700					; 60    L=JJ
25800	L60:	MOVE L,JJ
25900					;	JJ=JK
26000		MOVE JJ,JK
26100					;	JK=L
26200		MOVE JK,L
26300					;	KN=JX
26400		MOVEM T,KN
26500	
26600					; 59    IF(ALT-B.LT.2)GO TO 62
26700	L59:	MOVN T,B
26800		FADR T,AL
26900		CAMGE T,[=2.0]
27000		JRST L62
27100					;	ALT=ALT-1
27200		HRLZI T,576400
27300		FADR AL,T
27400					;	B=B+1
27500		HRLZI T,201400
27600		FADR B,T
27700					; 62    IF(JORD)GO TO 103
27800	L62:	SKIPGE JORD
27900		JRST L103
28000					;	H=B
28100		MOVE H,B
28200					;	B=ALT
28300		MOVE B,AL
28400					;	ALT=H
28500		MOVE AL,H
28600					;	IF(JK.NE.NK.AND.ABS(ALT-B).GT.5.)JA=3
28700	
28800		CAMN JK,NK#
28900		JRST L103
29000		MOVN T,B
29100		FADR T,AL
29200		SKIPGE T
29300		MOVNS T
29400		CAMG T,[5.0]
29500		JRST L103
29600		HRRZI T,3
29700		HRRZM T,JA
29800					; 103   CALL LINES(RJ,ALT,JA)
29900	L103:	MOVEM RJ,SVRJ#
30000		MOVEM AL,SVAL#
30100		MOVEM B,SVB#
30200		HRRZI 16,SVAC
30300		BLT 16,SVAC+15
30400		JSA 16,LINES
30500		JUMP SVRJ
30600		JUMP SVAL
30700		JUMP JA
30800					; 100   CALL LINES(RJ,B,2)	
30900		JSA 16,LINES
31000		JUMP SVRJ
31100		JUMP SVB 
31200		JUMP [2]
31300		HRLZI 16,SVAC
31400		BLT 16,15
31500					;	NK=JK
31600		MOVEM JK,NK
31700	
31800					;	JORD=-JORD
31900		MOVNS JORD
32000					;	NE(JK)=1
32100		HRRZI T,1
32200		HRRZM T,2(JK)
32300					;	NE(JJ)=-1
32400		SETOM 2(JJ)
32500					;	JA=2
32600		HRRZI T,2
32700		HRRZM T,JA
32800					;	I=I+M
32900		MOVE T,SVM
33000		ADDB T,I
33100					;	IF(I.LT.KN)GO TO 102
33200		CAMGE T,KN
33300		JRST L102
33400					;	L=1
33500		HRRZI L,3
33600					;	IF(KN.EQ.KL)L=-1
33700		MOVE T,KN
33800		CAMN T,KL
33900		HRROI L,-3
34000					;	JJ=JJ+L
34100		ADD JJ,L
34200					;	J=0
34300		SETZ J,
34400					;	IF(L)J=-1
34500		SKIPGE L
34600		HRROI J,-3
34700			;	IF(KN+M.GT.Q(JJ+J).OR.JJ.GT.KK.OR.NE(JJ).NE.0)GO TO 124
34800		SKIPN 2(JJ)
34900		CAILE JJ,-2(KK)
35000		JRST L124
35100		ADD T,SVM
35200		FLOAT(T)
35300		HRRZI HG,(JJ)
35400		ADD HG,J
35500		CAMLE T,(HG)
35600		JRST L124
35700					;	J=I
35800		MOVE J,I
35900					;	GO TO 52
36000		JRST L52
36100					; 48    JA=3
36200	L48:	HRRZI T,3
36300		HRRZM T,JA
36400					; 43    J=LEFT+M
36500	L43:	MOVE J,LE
36600		ADD J,SVM
36700					;	IF(J.LE.LRT)GO TO 42
36800		CAMG J,LRT
36900		JRST L42
37000					;	IF(JCONT)GO TO 51
37100		SKIPGE JCONT
37200		JRST L51		;	END
37300		MOVE 16,SV16
37400		JRA 16,2(16)
37500	SVAC:	BLOCK 16
37600	
37700		EXTERNAL DST,PLTR,DPY,.COMM.
37800			;	SUBROUTINE LINES(A,B,L)
37900			;	COMMON/DST/BB,CC
38000	   		;	COMMON /SIZ/RSZ,JCEN,KCEN /FL/IC,NZ,NX,RZ,XGP
38100			;	COMMON/DL/IXRX,SAVER,AA /PLTR/IPLT,RHT,DIS
38200			;	COMMON R2,JA,CENTR,JB,RJQ(20),JQ(20)
38300			;	COMMON/DPY/JJ(4000),WDS(250),MEDIT,IGO
38400			;	EQUIVALENCE (ITOP,JJ(3999)),(IBOT,JJ(4000))
38500			;	1,(JJ2,JJ(2))
38600			;	DATA BB/.008/,CC/3.5/
38700	 		;C  SET XGP TO 1200.0 FOR MARGIN IN XEROX COPIES
38800		
38900		M←2 ↔ NX←3 ↔ K←4
39000	
39100	LINES:	0
39200				;	GO TO 23
39300		JRST L23
39400				;22	IF(JQ(1).NE.0)GO TO 23
39500	L22:	SKIPE PLTR+=27
39600		JRST L23
39700				;	IF(CC.EQ.1000)GO TO 23
39800		MOVSI T,212764
39900		CAMN T,DST+1
40000		JRST L23
40100				;	B=B*(CC-BB*ABS(A))
40200		MOVE T,@(16)
40300		MOVMS	T
40400		FMPR T,DST
40500		FSBR T,DST+1
40600		FMPRM T,@1(16)
40700		MOVNS @1(16)
40800				;23	IF(IPLT)GO TO 2
40900	L23:	SKIPGE PLTR
41000	;;	JRST L2
41100		JRST L9
41110		MOVE	T,.COMM.+1	;IF(JA.EQ.44)RETURN
41120		CAIN	T,=44		;WON'T LOOK AT BARLINES FOR HEIGHT.
41130		JRA	16,3(16)
41200		MOVE	T,@1(16)
41300		CAMG	T,DPY+1
41400		JRST	L333
41500		MOVEM	T,DPY+1  ;  IF(B.LT.BOT)BOT=B
41600		JRA	16,3(16)
41700	L333:	CAMG	T,DPY+2
41800		MOVEM	T,DPY+2
41900		JRA	16,3(16)  ;	IF(B.GT.TOP)TOP=B
42000				;2	IF(IPLT.EQ.-2)RETURN
42100	;;L2:   	MOVNI T,2
42200	;;	CAMN T,PLTR
42300	;;	JRA 16,3(16)
42400				;9	M=ROFF(A*DIS)
42500	L9:   	MOVE M,@(16)
42600		FMPR M,PLTR+2
42700		SKIPGE M
42800		FADR M,[-=1.0]
42900		FADR M,[=0.5]
43000		FIXX(M)
43100		MOVEM M,MM#
43200				;	N=ROFF(B*RHT)
43300		MOVE NX,@1(16)
43400		FMPR NX,PLTR+1
43500		SKIPGE NX
43600		FADR NX,[-=1.0]
43700		FADR NX,[=0.5]
43800		FIXX(NX)
43900		MOVEM NX,NN#
44000				;8	CALL PLOT(M,N,L)
44100	L8:	MOVE T,@2(16)
44200		MOVEM T,LL#
44300		JSA 16,PLOT
44400		JUMP MM
44500		JUMP NN
44600		JUMP LL
44700				;	END
44800		JRA 16,3(16)
44900	
45000		EXTERNAL OUTF,PUTFIL,FASTOU,FINFIL,EXIT,PAC
45100	LX:	0
45200	N:	BLOCK =128
45300	PLOT:	0		;SUBROUTINE PLOT(I,J,K)
45400		MOVE	4,OUTF		;COMMON /OUTF/JJ
45500		CAMN	4,[-1]		;DIMENSION N(148)
45600		JRST	PL4		;IF(JJ.EQ.-1)GO TO 4
45700		MOVEI	7,1		;L=1
45800		MOVEM	7,LX
45900		MOVEI	4,=127		;N(1)=127
46000		MOVEM	4,N
46100		MOVE	4,[ASCIZ/" "/]		;IF(JJ.EQ.' ')JJ='PLT'
46200		CAME	4,OUTF
46300		JRST	PLB
46400		MOVE	4,[ASCIZ/"PLT"/]
46500		MOVEM	4,OUTF
46600	PLB:	JSA	16,PUTFIL	;CALL PUTFIL(JJ)
46700		JUMP	OUTF
46800		SETOM	OUTF		;JJ=-1
46900	PL4:	MOVE	5,@2(16)	;4	IF(K.EQ.99)GO TO 1
47000		CAIN	5,=99
47100		JRST	PL1
47200		AOS	LX		;L=L+1
47300		MOVEI	7,N
47400		ADD	7,LX		;CALL PAC(N(L),I)[SEE MSFAI.FAI]
47500		HRRZ	4,2(16)
47600		HRR	5,@4
47700		LSHC	5,-10
47800		HRRZ	4,1(16)
47900		HRR	5,@4
48000		LSHC	5,-16
48100		HRRZ	4,(16)
48200		HRR	5,@4
48300		LSHC	5,-16
48400		MOVEM	6,-1(7)
48500	
48600		MOVE	7,LX
48700		CAIGE	7,=128	;3	IF(L.LT.128)RETURN
48800		JRA	16,3(16)
48900		JSA	16,FASTOU	;2	CALL FASTOU(N,128)
49000		JUMP	N
49100		JUMP	[=128]
49200		MOVEI	7,1		;L=1
49300		MOVEM	7,LX
49400		JRA	16,3(16)	;RETURN
49500	PL1:	MOVE	5,LX		;1	N(1)=L
49600		MOVEM	5,N
49700		MOVEI	7,N		;J=N(L)
49800		ADD	7,5
49900		MOVE	7,-1(7)
50000		MOVEM	7,@1(16)
50100	PL100:	MOVEI	4,N		;DO 100 JJ=L,128
50200		ADD	4,5	;100	N(JJ)=J
50300		MOVEM	7,-1(4)
50400		CAIGE	5,=128
50500		AOJA	5,PL100
50600		JSA	16,FASTOU	;CALL FASTOU(N,128)
50700		JUMP	N
50800		JUMP	[=128]
50900		JSA	16,FINFIL	;CALL FINFIL
51000		SETZM	OUTF		;JJ=0
51100		JSA	16,EXIT		;CALL EXIT
51200	
51300	PLOTS:	0
51400		JRA	16,1(16)	; DUMMY ROUTINE
51500		END